what are the phases of a COMPILER in compiler Design